/**
 * @author 侯非
 * @date 4月2日
 * @class AddMoneyPaymentFormPanel
 * @extends Ext.form.FormPanel
 * @description 薪酬发放登记面板
 */
AddMoneyPaymentFormPanel = Ext.extend(Ext.form.FormPanel, {
	myid : "default",
	personNameStore : null,
	/**
	 * 构造方法
	 */
	constructor : function(_config) {
		if (_config == null) {
			_config = {};
		}
		Ext.apply(this, _config);
		/**
		 * 拷贝父类的构造方法
		 */
		AddMoneyPaymentFormPanel.superclass.constructor.call(this, {
			id : this.myid,
			bodyStyle : "backgroundColor:#DFE8F6;padding:10px;",
			autoScroll : true,
			border : false,
			items : [{
						xtype : "fieldset",
						title : "人员基本信息",
						autoHeight : true,
						autoWidth : true,
						labelWidth : 55,
						layout : "column",
						items : [{
									columnWidth : .38,
									layout : "form",
									border : false,
									bodyStyle : "backgroundColor:#DFE8F6;",
									defaults : {
										anchor : "92%",
										xtype : "textfield",
										allowBlank : false
									},
									items : [{
												fieldLabel : "人员姓名",
												name : "mpa.pfName"
											}, {
												fieldLabel : "档案编号",
												emptyText : "需要进行查询",
												readOnly : true,
												name : "mpa.pfFileId"
											}]
								}, {
									columnWidth : .33,
									layout : "form",
									border : false,
									bodyStyle : "backgroundColor:#DFE8F6;",
									defaults : {
										xtype : "textfield",
										anchor : "92%"
									},
									items : [{
												fieldLabel : "身份证号",
												allowBlank : false,
												name : "pfIdCard",
												listeners : {
													"blur" : this.onPersonIdCardBlur,
													scope : this
												}
											}, {
												fieldLabel : "薪标金额",
												readOnly : true,
												allowBlank : false,
												emptyText : "需要进行查询",
												name : "mpd.mpdMoneyStandardValue"
											}]
								}, {
									columnWidth : .28,
									layout : "form",
									border : false,
									bodyStyle : "backgroundColor:#DFE8F6;",
									labelWidth : 55,
									items : [{
												readOnly : true,
												xtype : "textfield",
												anchor : "90%",
												fieldLabel : "人员年龄",
												disabled : true,
												emptyText : "需要查询"
											}]
								}]
					}, {
						xtype : "fieldset",
						title : "薪酬发放基本登记信息",
						autoHeight : true,
						autoWidth : true,
						labelWidth : 55,
						layout : "column",
						items : [{
									columnWidth : .33,
									layout : "form",
									border : false,
									bodyStyle : "backgroundColor:#DFE8F6;",
									defaults : {
										anchor : "92%",
										allowBlank : false
									},
									items : [{
												fieldLabel : "奖励金额",
												xtype : "numberfield",
												name : "mpd.mpdBounsMoney"
											}, {
												fieldLabel : "登记人",
												xtype : "textfield",
												name : "mpa.userAddName"
											}]
								}, {
									columnWidth : .33,
									layout : "form",
									border : false,
									bodyStyle : "backgroundColor:#DFE8F6;",
									defaults : {
										anchor : "92%",
										allowBlank : false
									},
									items : [{
												fieldLabel : "扣除工资",
												xtype : "numberfield",
												name : "mpd.mpdDeductMoney"
											}, {
												xtype : "textfield",
												fieldLabel : "登记时间",
												readOnly : true,
												disabled : true,
												value : new Date()
														.toLocaleString()
											}]
								}, {
									columnWidth : .33,
									layout : "form",
									border : false,
									bodyStyle : "backgroundColor:#DFE8F6;",
									defaults : {
										anchor : "92%",
										allowBlank : false
									},
									items : [{
												fieldLabel : "绩效工资",
												xtype : "numberfield",
												name : "mpd.mpdTaskMoney"
											}]
								}]
					}, {
						xtype : "fieldset",
						title : "薪酬发放登记备注信息",
						autoHeight : true,
						autoWidth : true,
						labelWidth : 55,
						layout : "form",
						defaults : {
							xtype : "textarea",
							anchor : "96%",
							height : 52
						},
						items : [{
									fieldLabel : "奖励描述",
									name : "mpd.mpdBounsMemo"
								}, {
									fieldLabel : "扣除描述",
									name : "mpd.mpdDeductContent"
								}, {
									fieldLabel : "备注描述",
									name : "mpa.mpaMemo"
								}]
					}, {
						layout : "column",
						border : false,
						bodyStyle : "backgroundColor:#DFE8F6;",
						items : [{
									border : false,
									bodyStyle : "backgroundColor:#DFE8F6;",
									columnWidth : .16,
									items : [{
												xtype : "button",
												text : "确认登记薪酬发放",
												handler : this.onAddMoneyPayment,
												scope : this
											}]
								}, {
									border : false,
									bodyStyle : "backgroundColor:#DFE8F6;",
									columnWidth : .84,
									items : [{
												xtype : "button",
												text : "取消登记薪酬发放",
												handler : this.onCancelAddMoneyPayment,
												scope : this
											}]
								}]
					}]

		});
	},

	/**
	 * 查询人员档案编号与薪酬标准金额按钮单击事件
	 */
	onSearchPersonFile : function() {
		// 获取所有类型为textfield的集合
		var _items = this.findByType("textfield");
		// 获取姓名
		var _pfName = _items[0];
		// 获取身份证号
		var _pfIdCard = _items[2];
		// 如果验证通过方可查询
		if (_pfName.isValid()&& _pfIdCard.isValid()) {
			Ext.Ajax.request({
						url : "personFile.do",
						method : "post",
						success : this.onSearchSuccess,
						failure : this.onSearchFailure,
						scope : this,
						params : {
							operator : "showPersonFileByCondition",
							pfName : _pfName.getValue().trim(),
							pfIdCard : _pfIdCard.getValue().trim()
						}
					});
		}
	},

	/**
	 * 请求(查询)成功回调函数(不代表业务成功)
	 * 
	 * @param {}
	 *            _res
	 */
	onSearchSuccess : function(_res) {
		// 获取服务端返回值
		var _restxt = _res.responseText;
		// 如果为空
		if (_restxt == "null") {
			Ext.Msg.show({
						title : "系统提示",
						msg : "无效的姓名或身份证号",
						buttons : Ext.Msg.OK,
						icon : Ext.Msg.INFO
					});
		} else {
			// 对服务端的返回值进行反序列化成为json对象
			var _orestxt = Ext.decode(_restxt);
			// 将其包装成一个Record
			var _record = new Ext.data.Record(_orestxt);
			// 获取档案编号
			var _pfFileId = _record.get("pfFileId");
			// 获取薪酬标准金额
			var _miStandardMoney = _record.get("miCountMoney");
			// 获取人员年龄
			var _pfAge = _record.get("pfAge");
			// 获取所有类型为textfield的集合
			var _items = this.findByType("textfield");
			// 设置案编号
			_items[1].setValue(_pfFileId);
			// 设置薪酬标准金额
			_items[3].setValue(_miStandardMoney);
			// 设置人员年龄
			_items[4].setValue(_pfAge);
		}
	},

	/**
	 * 请求失败(查询)回调函数
	 * 
	 * @param {}
	 *            _res
	 */
	onSearchFailure : function(_res) {
		Ext.Msg.alert("系统消息", "网络异常,请检查网络是否正常或与管理员联系!");
	},

	/**
	 * 身份证号失去焦点事件
	 */
	onPersonIdCardBlur : function() {
		this.onSearchPersonFile();
	},

	/**
	 * 薪酬发放登记按钮单击事件
	 */
	onAddMoneyPayment : function() {
		// 如果表单验证通过,则提交表单
		if (this.getForm().isValid()) {
			// 提交表单
			this.getForm().submit({
						url : "moneyPayment.do?operator=addMoneyPayment",
						method : "post",
						waitTitle : "数据传输",
						waitMsg : "数据传输中,请稍后......",
						success : this.onAddMoneyPaymentSuccess,
						failure : this.onAddMoneyPaymentFailure,
						scope : this
					});
		}
	},

	/**
	 * 薪酬发放登记成功回调函数
	 * 
	 * @param {}
	 *            _from
	 * @param {}
	 *            _action
	 */
	onAddMoneyPaymentSuccess : function(_from, _action) {
		var _f = this.getForm();
		Ext.Msg.alert("系统消息", "薪酬发放单登记成功!", function() {
					// 重置表单
					_f.reset();
				});
	},

	/**
	 * 薪酬发放登记失败回调函数
	 * 
	 * @param {}
	 *            _form
	 * @param {}
	 *            _action
	 */
	onAddMoneyPaymentFailure : function(_form, _action) {
		Ext.Msg.alert("系统消息", "操作失败,请重新操作或与管理员联系!");
	},

	/**
	 * 取消薪酬发放登记按钮单击事件
	 */
	onCancelAddMoneyPayment : function() {
		this.getForm().reset();
	}

});